A programmable logic device is a semiconductor integrated circuit that can be rewritten after chip manufacturing. A programmable logic device includes wiring lines, and two wiring lines selected from among these wiring lines are electrically connected or unconnected. To perform control so that selected two wiring lines are put into a connected state or an unconnected state, a switching circuit is used, and this switching circuit includes a transistor and a memory. The memory can be electrically programmed, and the transistor is switched on and off in accordance with programmed information.
Meanwhile, cross-point resistive change element arrays are known, and a cross-point resistive change element array includes two-terminal resistive change elements as memory elements and achieves the above switching circuit by using these memory elements. Each of the resistive change elements includes two electrodes and a resistive change layer disposed between the two electrodes.
As a predetermined voltage is applied between the two electrodes, the resistance state of the resistive change layer is changed, and the electrical resistance between the two electrodes can be switched to a low-resistance state or a high-resistance state.
When a resistive change element is programmed, the magnitude of the program voltage to be applied to the electrodes, and the application time of the program voltage need to be appropriately controlled. Further, it is critical to control the magnitude of the current flowing in the resistive change element while the program voltage is applied. Semiconductor integrated circuits including circuits that control currents flowing in resistive change elements during programming as described above are also known.
When a cross-point resistive change element array is programmed, a lower voltage than that of the selected resistive change element is applied to the unselected resistive change elements. This is to protect the unselected resistive change elements from program disturb (set disturb or reset disturb).
Also, a voltage for changing the resistance of a resistive change element varies with the type of the resistive change element, and also varies with the switch cycle or differs between a case where the resistive change element changes from a high-resistance state to a low-resistance state and a case where the resistive change element changes from a low-resistance state to a high-resistance state. Therefore, it is difficult to predict the next voltage for changing resistance while operating. If the variation of the voltage for changing resistance is made wider, program disturb might occur even in a case where a lower voltage than that of the selected resistive change element is applied to the unselected resistive change elements. Any technique for causing no program disturb even when the variation of the voltage for changing the resistance of a resistive change element is made wider is not known at present.